1. Field of the Invention
The present invention relates to multimedia computer communication systems; and more particularly, to a buffering system for streaming media, such as audio/video, on the Internet.
2. Description of the Prior Art
Prior to the development of Internet streaming media technologies, audio and video were formatted into files, which users needed to download to their computer before the files could be heard or viewed. Real time, continuous media, as from a radio station, was not suitable for this arrangement in that a file of finite size must be created so it could be downloaded. The advent of streaming media technologies allowed users to listen or view the files as they were being downloaded, and allowed users to xe2x80x9ctune-inxe2x80x9d to a continuous media broadcast, or xe2x80x9cstreamxe2x80x9d, such as from a radio station.
Since audio and video media must play out over a period of time it is more appropriate to think of bandwidth requirements than file size. The bandwidth requirement of an audio or video media refers to the data rate in bits per second that must be transmitted and received in order to listen or view the material uninterrupted. Transmitting the audio or video material over a connection slower than the bandwidth requirement results in unsatisfactory viewing or listening, if viewing or listening is possible at all. The connection available to most Internet users is by dial-up modem, which has a maximum receive data rate of 56,000 bits per second. Most audio and video available on the Internet has been compressed to be listenable or viewable within the 56,000 bits per second modem bandwidth. Requirements for achieving adequate audio and video over the Internet generally consume a considerable portion of the available bandwidth.
Internet connection quality can vary rapidly over time, with two primary factors responsible for degradation of the instantaneous bandwidth actually available to the user. These factors are the quality of the user""s modem connection over telephone lines, which can have periods of interference causing reduced available bandwidth, and momentary Internet congestion at various points along the route over which the user""s data flows. Each of these factors can cause delays and interruptions in the transmission of data to the user. Internet data communications devices such as routers are designed to drop data xe2x80x9cpacketsxe2x80x9d if they get overloaded. For material that is not time sensitive, these dropped packets will usually be resent, and the user will eventually be presented with the material. However, since streaming media is time sensitive, dropped packets can have a significant impact on the receipt and playback of an audio or video stream. These degradations in the receipt of Internet data are very common, and prevent most users from being able to listen to or view streaming media without interruption unless some special provisions have been incorporated into the user""s computer software to accommodate data transmission interruptions.
These interruptions are commonly referred to as xe2x80x9cdropoutsxe2x80x9d, meaning that the data flow to the user has been interrupted (i.e., the audio xe2x80x9cdrops outxe2x80x9d). Dropouts can be extremely annoyingxe2x80x94for example, while listening to music. The current state-of-the-art solution to the problem uses a pre-buffering technique to store up enough audio or video data in the user""s computer so that it can play the audio or video with a minimum of dropouts. This process requires the user to wait until enough of the media file is buffered in memory before listening or viewing can begin. The media data is delivered by a server computer which has available to it the source of the media data, such as by a connection to a radio station. When the user connects to the server via the Internet, audio/video output at the user""s system is delayed while the user""s buffer is filled to a predetermined level. Typical pre-buffering wait times range from 10 to 20 seconds or more, determined by the vendor providing the audio or video media. Even with this pre-buffering process, interruptions in playback still occur.
In this process, the user has a software application on the computer commonly called a xe2x80x9cmedia playerxe2x80x9d. Using the features built into the media player, the user starts the audio or video stream, typically by clicking on a xe2x80x9cstartxe2x80x9d button, and waits 10-20 seconds or so before the material starts playing. During this time data is being received from the source and filling the media player""s buffer. The audio or video data is delivered from the source at the rate it is to be played out. If, for example, the user is listening to an audio stream encoded to be played-out at 24,000 bits per second, the source sends the audio data at the rate of 24,000 bits per second. Provided that the user waits 10 seconds, and the receipt of the buffering data has not been interrupted, there is enough media data stored in the buffer to play for 10 seconds.
Gaps in the receipt of audio/video data, due to Internet slowdowns, cause the buffer to deplete. Because transmission of audio/video media data to the user takes place at the rate it is played out, the user""s buffer level can never be increased or replenished while it is playing. Thus, gaps in the receipt of audio/video media data inexorably cause the buffer level to decrease from its initial level. In time, extended or repeated occurrences of these gaps empty the user""s buffer. The audio/video material stops playing, and the buffer must be refilled to its original predetermined level before playing of the media resumes.
By way of illustration in a 10 second pre-buffering scenario, if the data reception stopped the instant that the media started playing, it would play for exactly 10 seconds. Once it starts playing, the media data plays out of the buffer as new media data replenishes the buffer. The incoming data rate equals the rate at which the data is played out of the user""s buffer, assuming the receipt of data across the Internet is unimpeded. If there are no interruptions in the receipt of the media data for the duration of the time the user listens to or watches the material, the buffer level remains constant and there will still be 10 seconds of data stored in the media player""s buffer when the user stops the player. On the other hand, if the media player encounters interruptions totaling 6 seconds while playing the material, there would only be 4 seconds of media data remaining in the buffer when the user stopped it. If data reception interruptions at any time during the playing exceed 10 seconds, the user""s media player buffer becomes exhausted. There is no media data to play, and the audio or video stopsxe2x80x94a dropout has occurred. At this point a software mechanism in the media player stops attempting to play any more of the material, and starts the buffering process again. The media player remains silent until the buffer refills, at which time the media player will once again start playing the material.
There are two fundamental types of streaming media: (i) material that originates from a source having a real-time nature, such as a radio or TV broadcast, and (ii) material that originates from a non-real-time source such as from a disk file. An example of non-real-time material might be a piece of music stored as a disk file, or a portion of a broadcast that originally was real-time, perhaps yesterday""s TV evening news, and was recorded into a disk file. For purposes of clarity within this document, streaming media of type (i) will be referred to as xe2x80x9cbroadcastxe2x80x9d media, and streaming media of type (ii) will be referred to as xe2x80x9cfile basedxe2x80x9d media.
Both streaming media types are handled similarly in conventional systems, and both are handled similarly by the streaming media buffering system of the present invention. The two streaming media types are readily distinguished. Broadcast streaming media has as its source a system or arrangement that by definition can only be transmitted to users as fast as the material is generated; for example, a disk jockey speaking into a microphone. File based media, on the other hand, can be transmitted to users at any data rate, since there is no inherent time element to a file residing on a computer disk. With conventional Internet streaming media systems for streaming media of either type, media data is transmitted from the server to the user at the rate at which it will be played out, regardless of the data rate capabilities of the connection between the server and the user.
Conventional streaming media systems may buffer media data at the server for the purpose of packet assembly/disassembly. Media data may also be buffered at the server to permit programming conveniences such as dealing with chunks of data of a specific size. Server buffering of media data is not used by conventional streaming media systems to mitigate long term Internet performance degradation as described hereinafter.
The sending of audio or video files via a network is known in the art. U.S. Pat. No. 6,029,194 to Tilt describes a media server for the distribution of audio/video over networks, in which retrieved media frames are transferred to a FIFO buffer. A clock rate for a local clock is adjusted according to the fullness of the buffer. The media frames from the buffer are sent in the form of data packets over the networks in response to interrupts generated by the local clock. In this manner, the timing for the media frames is controlled by the user to assure a continuous stream of video during editing. U.S. Pat. No. 6,014,706 to Cannon, et al. discloses an apparatus and method for displaying streamed digital video data on a client computer. The client computer is configured to receive the streamed digital video data from a server computer via a computer network. The streamed digital video data is transmitted from the server computer to the client computer as a stream of video frames. U.S. Pat. No. 6,002,720, to Yurt, et al. discloses a system of distributing video and/or audio information wherein digital signal processing is employed to achieve high rates of data compression. U.S. Pat. No. 5,923,655, to Veschi et al. discloses a system and method for communicating audio/video data in a packet-based computer network wherein transmission of data packets through the computer network requires variable periods of transmission time. U.S. Pat. No. 5,922,048 to Emura discloses a video server apparatus having a stream control section which determines a keyframe readout interval and a keyframe playback interval that satisfy a playback speed designated by a terminal apparatus. Finally, U.S. Pat. No. 6,014,694 to Aharoni, et al. discloses a system and method for adaptively transporting video over networks, including the Internet, wherein the available bandwidth varies with time.
There remains a need in the art for a method and system that afford immediate and uninterrupted listening/viewing of streaming media by the user.
The present invention provides a system and method for sending streaming media, such as audio or video files, via the Internet. Immediate playing of the media on a user""s computer is afforded while reducing interruptions in playback due to Internet congestion and temporary modem delays due to noisy lines. Nearly instantaneous playback is achieved, while maintaining protection against playback interruption. Delayed starts, heretofore required to provide protection against interruption, are avoided. Data loss due to interruptions in the receipt of media data by the media player can be recovered while the player continues to play out the audio or video material. If the interruptions are so severe as to deplete the user""s buffer and stop the play out, the media player will begin to play out again as soon as the media player begins to receive media data without waiting to first build up the buffer.
Generally stated, the invention provides a system for distributing via the Internet streaming media composed of a plurality of time-sequenced data elements. The system has a server connected to the Internet for transmitting the data elements. Associated with the server are a buffer manager and a FIFO buffer for storing at least one of the data elements for transmission. The buffer manager comprises means for: receiving the media data; supplying media data in order to the FIFO buffer; supplying the FIFO buffer with a predetermined number of data elements at a constant time-sequenced fill rate; maintaining a pointer into the buffer for each user computer indicating the last media data element that has been sent to that user, thus indicating the next element or elements to be sent; and, once the FIFO buffer is full, deleting the oldest data element in the buffer as each new data element is received, said means arranged to maintain the pre-determined number of data elements in the FIFO buffer. At least one user computer is connected to the server via the Internet or other data communications medium.
This invention presumes the existence of a data communications transport mechanism, such as the TCP protocol, for the reliable delivery of data in an ordered sequence from the source of the media data to the server, or from the server to the media player software of the user computer. Thus, the delivery of data in the proper sequence is outside the scope of this invention.
The user computer is associated with a media player software incorporating a user buffer and comprises means for receiving and storing a predetermined number of media data elements which are received sequentially by the media player, playing the data out sequentially as audio and/or video, and deleting media data elements from the buffer as they are played out. As data is played out, the next sequential data elements are received from the server in such a fashion as to approximately maintain the predetermined number of data elements in the user""s buffer.
The server stores a predetermined amount of media data in a First-In First-Out (FIFO) buffer in an arrangement that receives media data at a fixed rate. Once the buffer is full, for each new data element received into the buffer the oldest data element is deleted from the buffer. Requests from user computers to connect are not accepted until the server buffer is full. Once a connection is made to a user""s computer, the server sends the media data to the user computer as buffer in the following manner. First, media data is sent to the user at the highest rate that the data connection between the server and the user computer will support until the predetermined amount of data that had been stored in the server buffer has been transferred to the user""s computer. Once the buffer has been transferred a steady state condition is reached wherein as each media data element arrives at the server, it is immediately sent out to the user computer. In this steady state condition, the media data is sent at a rate that matches the constant fill rate of the server buffer, and is received at the same rate by the user computer if there are no interruptions in the transmission of media data between the server and the user""s computer. If interruptions have interfered with the arrival of sent media data to the user""s computer, that data may have been xe2x80x9cdroppedxe2x80x9d by routers in the Internet and needs to be resent. This causes data to xe2x80x9cback upxe2x80x9d into the server FIFO for that user.
The resending of missing data is the responsibility of the reliable transport mechanism, such as TCP. The server buffer xe2x80x9csendsxe2x80x9d data by delivering it to the transport mechanism. The transport mechanism actually xe2x80x9csendsxe2x80x9d the data across the communications medium, and has processes which determine if all the data that has been sent has been received by the destination. If not, missing pieces of data are automatically resent to the destination, and are arranged to be delivered to the target software on the destination system in an ordered fashion. In the circumstance of this invention, the destination is the user computer, and the target software on the destination system is the media player. If the transport mechanism determines that data is missing, it retransmits that data to the destination as fast as the connection between the server and destination will allow. The net effect of this invention is that all media data to be delivered to a user computer is always sent as fast as the communications medium will support, either by the server buffer passing media data to the transport mechanism, or by the transport mechanism delivering or redelivering the media data to the user computer. This is enabled by buffering data at the server, and is distinctly different from prior art in which media data is only sent from the server to the user computer at the rate at which it is to be played out.
Routinely, once a steady state has been achieved, the next data element to be sent is the next sequential data element from that which has already been received by the user""s computer buffer. However, if there is more data to be sent than at the routine constant fill rate, such as in the condition where some media data has been resent by the reliable transport layer, the server transport mechanism will again send the buffered media data as fast as the connection between the server and the user""s computer will support. This allows for rebuilding the user""s computer buffer under circumstances wherein Internet interruptions have blocked the normal flow of data. When compared to conventional systems, which provide no capability to rebuild the user""s computer buffer when data is lost, the streaming media buffering system of the present invention provides for recovery of lost data elements and the restoration of the user""s buffer, even while the user media player continues to play.
Under conditions in which interruptions have interfered with the arrival of sent media data to the user""s computer, data loss exceeding certain levels will cause the transport mechanism software to stop accepting data for transmission from the application software, namely the streaming media server software. The streaming media server software keeps track of the last data element in the FIFO buffer that has been xe2x80x9csentxe2x80x9d to each user using a software pointer. An interruption in the ability to send media data to a user results in this pointer xe2x80x9cbacking upxe2x80x9d in the FIFO in such a way that the server knows from what point in the buffer to restart sending data when the transport mechanism again requests data to send. When the server software receives that notification, it will begin sending data to the user starting from the next data element to send as indicated by the pointer, and sending as much data as the transport mechanism will accept. The transport mechanism will again send this data as fast as it can to the user. This process continues until the steady state condition is again reached wherein each data element is sent to the user as soon as it arrives from the media source.
In another embodiment, the server is connected to the Internet, and to a broadcast media source, such as a radio station. A radio station computer is provided with a means for receiving media data elements as they are generated by the audio and/or video source, and for transmitting those media data elements to the server at a constant time-sequenced rate, using a reliable transport mechanism such as TCP. As before, the server provides a buffer manager and a FIFO buffer, and provides a means for receiving the sequentially arranged media data elements from the broadcast media source and storing those data elements in the FIFO buffer. The buffer manager comprises means for: supplying the FIFO buffer with a predetermined number of data elements at a constant time-sequenced fill rate; maintaining a pointer into the buffer for each user computer indicating the last media data element that has been sent to that user, thus indicating the next element or elements to be sent; and, once the FIFO buffer is full, deleting the oldest data element in the buffer as each new data element is received. Importantly, the buffer manager is arranged to maintain the pre-determined number of data elements in the FIFO buffer. At least one user computer is connected to the server via the Internet or other data communications medium.
The user computer is associated with a media player software incorporating a user buffer and comprises means for receiving and storing a predetermined number of media data elements which are received sequentially by the media player, playing the data out sequentially as audio and/or video, and deleting media data elements from the buffer as they are played out. As data is played out, the next sequential data elements are received from the server in such a fashion as to approximately maintain the predetermined number of data elements in the user""s buffer.
In another embodiment, the server is connected to the Internet and provisioned as initially described, and has available to it file based media data as the source material. The file based media data can be read by the server which can deliver media data elements to the server FIFO buffer at a constant time-sequenced rate, as if the data were arriving from a broadcast media source. As before, the server provides a buffer manager and a FIFO buffer, and provides a means for receiving the sequentially arranged media data elements from the file based media source and storing those data elements in the FIFO buffer. The buffer manager comprises means for: receiving the media data; supplying media data in order to the FIFO buffer; supplying the FIFO buffer with a predetermined number of data elements at a constant time-sequenced fill rate; maintaining a pointer into the buffer for each user computer indicating the last media data element that has been sent to that user, thus indicating the next element or elements to be sent; and, once the FIFO buffer is full, deleting the oldest data element in the buffer as each new data element is received, said means arranged to maintain the pre-determined number of data elements in the FIFO buffer. The server buffer manager, or a separate process on the server, or a process on another computer having access to the file based media data, provides for reading the media data file and making available to the FIFO buffer sequentially arranged media data elements. At least one user computer is connected to the server via the Internet.
The user computer is associated with a media player software incorporating a user buffer and comprises means for receiving and storing a predetermined number of media data elements which are received sequentially by the media player, playing the data out sequentially as audio and/or video, and deleting media data elements from the buffer as they are played out. As data is played out, the next sequential data elements are received from the server in such a fashion as to approximately maintain the predetermined number of data elements in the user""s buffer.
In another embodiment, the server is connected to the Internet and provisioned as initially described. The server buffer manager, or the media source, provides for sequentially numbering the media data elements. The server buffer manager does not maintain a pointer into the server buffer for each user. Instead, the media player buffer manager in the user computer maintains a record of the serial number of the last data element that has been received. Via the use of standard data communications protocol techniques such as TCP, the user computer transmits a request to the server to send one or more data elements, specifying the serial numbers of the data elements. The server responds by sending the requested data elements, and depends upon the reliable transmission protocol to assure delivery. The user computer then continues with additional data requests for the duration of playing the audio/video material. In this manner, the user computer, not the server, maintains the record of the highest data element number stored in the user computer buffer. The media data will be transmitted to the user computer as fast as the data connection between the user computer and the server will allow. As before, the server provides a buffer manager and a FIFO buffer, and provides a means for receiving the sequentially numbered media data elements from a broadcast media source or a file based media source, and storing those data elements in the FIFO buffer. The buffer manager comprises means for: receiving the media data; supplying media data in order to the FIFO buffer; supplying the FIFO buffer with a predetermined number of data elements at a constant time-sequenced fill rate; and, once the FIFO buffer is full, deleting the oldest data element in the buffer as each new data element is received. Such means is arranged to maintain the pre-determined number of data elements in the FIFO buffer. At least one user computer is connected to the server via the Internet.
The user computer is associated with a media player software incorporating a user buffer and comprises means for receiving and storing a predetermined number of media data elements which are received sequentially by the media player, playing the data out sequentially as audio and/or video, and deleting media data elements from the buffer as they are played out. As data is played out, the next sequential data elements are requested from the server in such a fashion as to approximately maintain the predetermined number of data elements in the user""s buffer.
In yet another embodiment, the invention provides a method for distributing from a server via the Internet streaming media composed of a plurality of time-sequenced data elements. A predetermined number of the data elements are sequentially loaded into a FIFO buffer. Additional data elements continue to be received on a constant time basis. As each new data element is input to the buffer, the oldest data element is deleted from the buffer, maintaining in the buffer the same predetermined number of data elements. At the request of a user computer for connection to a media stream, a group of the data elements is sequentially sent via the Internet from the FIFO buffer to the user computer connected to the Internet. Upon being received by the user computer, the sent group of data elements is loaded into a user""s buffer associated with the user computer. The users computer immediately begins to play the audio/video streaming media material. The server continues to send the next data elements in sequence until the contents of the FIFO buffer have been sent. The data elements are sent by the server as fast as the connection between the server and user computer will allow. Once the contents of the FIFO buffer have been sent to a user computer, as each new data element is received into the FIFO buffer it is immediately sent to the user computer in such a manner as to keep the user computer buffer full. The process repeats for substantially the entire time that the audio/video material is played.
Unlike conventional buffering systems, audio begins to play on the user system as soon as the user connection to the audio server is effected and a small amount of data has been transferredxe2x80x94conventional systems required many seconds of data. Audio/video media data is initially transmitted from the server more rapidly than it is played out by the user system, until the server buffer has been transferred to the user computer. The user""s buffer is built up while the audio is playing, and can be restored if it is diminished by data transmission interruptions. Advantageously, the system and method of this invention afford faster data transmissions than the playback data rate of the media data. Audio/video data is transmitted from the server more rapidly than it is played out by the user system under conditions wherein the user""s computer buffer is not full. The audio/video data in the user buffer accumulates; interruptions in playback due to temporary Internet and modem delays are avoided.
Although the preferred embodiment utilizes a reliable transport mechanism to move data between the server and the user, alternative embodiments could incorporate this invention""s buffering system in combination with an unreliable datagram-based transport mechanism Hybrid systems, where a combination of this invention""s buffering system, and unreliable datagram based transport mechanisms can also be used.